import { Router } from "egg";

export default {
  /**
   * 请求成功返回体
   * @param data 返回对象
   * @param code 结果编码
   * @returns
   */
  success(data: any, code: number = 1) {
    return {
      success: true,
      message: null,
      data,
      timestamp: Date.now(),
      code
    };
  },
  /**
   * 请求失败返回体
   * @param message 失败信息
   * @param code 请求结果编码
   * @returns
   */
  fail(message: string, code: number = -1) {
    return {
      success: false,
      message,
      data: null,
      timestamp: Date.now(),
      code
    };
  },
  /**
   * 注册Restful风格api，最终api路径由prefix与domain构成。
   * @description ex：1、prefix=/api/v1，domain=users；2、通用Api：/api/v1/users；3、分页Api：/api/v1/page/users
   * @param ctrl 实现Restful规范的控制器
   * @param router egg路由对象
   * @param prefix api前缀 ex: /api/v1
   * @param domain 域对象 ex: users
   */
  registRestfulRoute(ctrl: RestfulController, router: Router, prefix: string, domain: string): void {
    router.resources(domain, prefix + "/" + domain, ctrl);
    if (ctrl.page) {
      router.post(prefix + "/page/" + domain, ctrl.page);
    }
  }
};
